home *** CD-ROM | disk | FTP | other *** search
- From cmg Thu Jan 4 18:25:07 1990
- Return-Path: <cmg>
- Received: by watsun.cc.columbia.edu (5.59/FCB)
- id AA03603; Thu, 4 Jan 90 18:25:07 EST
- Date: Thu, 4 Jan 90 18:25:06 EST
- From: Christine M Gianone <cmg@watsun.cc.columbia.edu>
- To: info-kermit
- Subject: Info-Kermit Digest V11 #1
- Reply-To: Info-Kermit@watsun.cc.columbia.edu
- Queries-To: Info-Kermit-Request@WATSUN.CC.COLUMBIA.EDU
- Message-Id: <CMM.0.88.631495506.cmg@watsun.cc.columbia.edu>
-
- Info-Kermit Digest Thu, 4 Jan 1990 Volume 11 : Number 1
-
- PROPOSALS FOR KERMIT PROTOCOL ADDITIONS -
-
- Proposal for Kermit SET FILE COLLISION Command
- Proposal for Kermit SET ATTRIBUTE Command
- Proposal for REMOTE SET Extension to the Kermit Protocol
-
- Digest submissions may be sent to Info-Kermit@WATSUN.CC.COLUMBIA.EDU, requests
- for addition to or deletion from the Info-Kermit subscriber list to
- Info-Kermit-Request@WATSUN.CC.COLUMBIA.EDU or to KERMIT@CUVMA.BITNET.
-
- Kermit files may be obtained over networks and by mail order. On the
- Internetwork, use FTP to log in to host WATSUN, WATSUN.CC.COLUMBIA.EDU, a
- SUN-4/280 running UNIX (SUNOS 4.0), IP host number 128.59,39.2.
- 128.59.40.130. Login as user anonymous (note, lower case), any password, and
- GET or MGET the desired files. The Kermit files are in directories kermit/a,
- kermit/b, kermit/c, kermit/d, and kermit/e. You can also get Kermit files
- over BITNET/EARN; to get started send a message with text HELP to KERMSRV, the
- Kermit file server, at host CUVMA. For detailed instructions, read the file
- kermit/a/aanetw.hlp (AANETW.HLP on KERMSRV). To order by mail, request a
- complete list of Kermit versions and an order form from Kermit Distribution,
- Columbia University Center for Computing Activities, 612 West 115th Street,
- New York, NY 10025 USA.
-
- ----------------------------------------------------------------------
-
- Date: Mon, 11 Dec 89 19:15:07 EST
- >From: Christine M Gianone <cmg@watsun.cc.columbia.edu>
- Subject: Kermit Protocol Additions
- Keywords: Kermit Protocol
-
- This issue of the Info-Kermit Digest contains several proposals for extending
- the Kermit protocol in certain minor ways, all of them related. These
- discussions are for Kermit developers. They assume familiarity with the
- Kermit protocol, as described in "Kermit, A File Transfer Protocol", by Frank
- da Cruz, Digital Press (1987).
-
- ------------------------------
-
- Date: Mon, 11 Dec 89 19:15:07 EST
- >From: Christine M Gianone <cmg@watsun.cc.columbia.edu>
- Subject: Proposal for Kermit SET FILE COLLISION Command
- Keywords: Kermit Protocol, SET FILE Command
-
- PROBLEM:
-
- As pointed out by Gregg Wonderly in Info-Kermit V10 #4, as well as by John
- Chandler (author of Kermit-370) and many others previously, Kermit's SET
- WARNING (sometimes also known as SET FILE WARNING) command is misnamed and
- furthermore does not allow for certain desirable kinds of behavior when a file
- arrives which has the same name as an existing file.
-
- SOLUTION:
-
- A new command to replace the old SET [FILE] WARNING command (or which can
- coexist with it): SET FILE COLLISION, similar to the SET FILE EXISTS command
- which was proposed by Gregg. The name was changed for grammar's sake, several
- additional options are suggested, and their behavior described somewhat
- differently:
-
- SET FILE COLLISION REPLACE: Destroy the previously existing file, replace it
- with the new copy (the current behavior of SET WARNING OFF).
-
- SET FILE COLLISION RENAME: Give the incoming file a new, unique name so that
- it won't overwrite any existing files (like SET WARNING ON). This would
- be the default behavior.
-
- SET FILE COLLISION BACKUP: Give the existing file a new, unique name, using
- the same algorithm that is used on the arriving file by SET FILE COLLISION
- RENAME, and then accept the incoming file under its own name.
-
- SET FILE COLLISION DISCARD: Reject any incoming file that has the same name as
- an existing file using (a) the attribute refusal mechanism ("N" in the
- data field of the ACK to the Attribute packet) if the use of attribute
- packets was negotiated, (b) by putting an "X" in the data field of
- acknowledgements to any Data packets that arrive to request cancellation
- of the file. Always use method (b), even if also using method (a), in
- order to get on to the next file as quickly as possible. In case the
- sending Kermit does not understand either of these signals and the file
- continues to arrive, do not open a new file and simply acknowledge and
- discard all data packets up to the end of the file.
-
- As Gregg pointed out, the DISCARD option will be handy for resuming
- transfer of a file group that had been interrupted. This gives us a cheap
- version of checkpointing. A more general and protocol-driven
- checkpointing mechanism will be proposed in the future.
-
- SET FILE COLLISION APPEND: Append an arriving file to an existing file
- that has the same name. The resulting file keeps the same
- system-dependent characteristics it had before, except that the date is
- changed. This option should be used with caution, since it opens the
- door to creating files of mixed types (e.g. a text file appended to a
- binary file, a spreadsheet appeneded to a database, etc). Old versions
- of IBM mainframe Kermit operated in this way.
-
- SET FILE COLLISION ASK: Ask the user whether to replace, rename, discard,
- or append each arriving file that has the same name as an existing file.
- This option, too, should be used with caution because the file transfer
- could time out if the user takes too long to answer the query. There are
- also user-interface issues: what happens to the active file transfer
- display, etc. Macintosh Kermit currently supports this in the form of
- of "attended file transfer mode".
-
- When the REPLACE and BACKUP options are in effect, a question arises
- (originally posed by John Chandler). Should the receiving Kermit create the
- new file using its current file settings (SET FILE TYPE, etc), or should the
- new file inherit the characteristics of the existing file, like protection,
- blocksize, record format, etc, on systems where files have such things (IBM
- mainframes, VAX/VMS, etc)? There should also be a command to let the user
- specify this:
-
- SET FILE REPLACE {PRESERVE, DEFAULT}
-
- where PRESERVE would create the new file with the same characteristics as the
- old one, and DEFAULT would use the current file settings of the receiving
- Kermit program and the host operating system when creating the new file.
-
- The setting of SET FILE COLLISION will have an effect (as FILE WARNING does
- now) upon the receiving Kermit's handling of the file size attribute as
- reported in the incoming Attribute packet. If the REPLACE option is in force,
- then the existing file's size must be added to the available space before
- deciding whether to accept or refuse the file on the basis of space.
-
- This new command involves no new protocol. Its operation is strictly local
- to the receiving Kermit program, and gives the user added control over its
- behavior when receiving files.
-
- ------------------------------
-
- Date: Mon, 11 Dec 89 19:15:07 EST
- >From: Christine M Gianone <cmg@watsun.cc.columbia.edu>
- Subject: Proposal for Kermit SET ATTRIBUTE Command
- Keywords: Kermit Protocol, SET ATTRIBUTE Command
-
- PROBLEM:
-
- As the use of File Attribute (A) packets within Kermit programs grows more
- widespread, it is becoming apparent that the user needs to have more control
- over this feature. Currently, most Kermit programs that support attribute
- packets have a command SET ATTRIBUTES {ON, OFF}, so that if one or more
- attributes is causing problems on the receiving computer, the sender can be
- commanded not to send any attributes at all and the receiver can be told to
- ignore all incoming attributes.
-
- For example, suppose both the sender and receiver programs support the file
- creation date attribute, and the receiver sets the arriving file's date from
- it. On some computers, incremental backups work according the file date and
- so files that are received by Kermit won't be backed up. If the user gives
- the SET ATTRIBUTES OFF command, then the current date will be used when
- creating the incoming file, but other useful attributes like file size will be
- absent or ignored. In this case, the receiving Kermit will not be able to
- reject an arriving file in advance if it would be too big to fit on the
- available storage.
-
- You should not have to sacrifice all file attributes if only one of them is
- causing problems. Furthermore, it is possible to imagine situations in which
- you want a certain attribute to be effective when sending a file but not when
- receiving, or vice-versa. For example, suppose the date attribute works
- correctly when receiving a file, but when sending a file it causes the other
- Kermit program to crash because of a bug. In this case, you need a way of
- telling your Kermit program to not to send the date attribute, but still
- continue to handle for incoming files.
-
- SOLUTION:
-
- A new command, SET ATTRIBUTE <name> {IN, OUT} {ON, OFF}. The <name> is the
- name of any Kermit attribute as listed on pp.272-279 of the Kermit book, or
- else the word ALL to mean all attributes. IN OFF means that the attribute
- should be ignored if it appears in an incoming File Attribute packet. OUT OFF
- means that the named attribute should not be included in any File Attribute
- packets which are sent. IN ON and OUT ON are used to enable the named
- incoming or outbound attributes. If you specify ALL OFF, then the Kermit
- program should not set Attribute bit in the capabilities field of its
- Send-Init packet (equivalent to the current command SET ATTRIBUTES OFF).
- Examples:
-
- Command Meaning
-
- SET ATTRIBUTE LENGTH IN OFF Ignore incoming length attributes
- SET ATTRIBUTE DATE OUT OFF Omit date from outbound attributes
- SET ATTRIBUTE DATE OUT ON Include date from outbound attributes
- SET ATTRIBUTE ALL OUT OFF Don't send any attributes
- SET ATTRIBUTE ALL IN OFF Ignore all incoming attributes
-
- This new command is completely self-contained within each Kermit program.
- There is no additional protocol between the two Kermit programs.
-
- Thanks to John Chandler and Joe Doupnik for advice and suggestions on these
- new commands.
-
- ------------------------------
-
- Date: Mon, 11 Dec 89 19:15:07 EST
- >From: Christine M Gianone <cmg@watsun.cc.columbia.edu>
- Subject: Proposal for REMOTE SET Extension to the Kermit Protocol
- Keywords: Kermit Protocol, REMOTE SET Command
-
- PROBLEM:
-
- Certain Kermit programs (including MS-Kermit 3.0, C-Kermit 4F) include
- information about whether a file is text or binary in the File Attribute
- packet, so the receiver can put itself into the right mode automatically. But
- when talking to a server there is no way for the client program, before
- issuing a GET command, to tell the server whether to send the file in text or
- binary mode. This problem extends to various other protocol and file-related
- parameters.
-
- NOTE:
-
- The Kermit protocol definition includes a REMOTE KERMIT command, and the
- associated packet format and protocol. It lets the user of the client program
- issue a command to the server in its own interactive-mode command language.
- But this is not a totally satisfactory answer because the syntax of Kermit
- programs can and does vary and, perhaps more to the point, some Kermit
- programs do not have an interactive command mode at all (Macintosh Kermit is
- one example). What is needed is a standard mechanism and syntax that can
- apply to all Kermit programs uniformly.
-
- SOLUTION:
-
- A new addition to the Kermit protocol: REMOTE SET.
-
- REMOTE SET would be a Generic Kermit Server command. A generic command looks
- like this:
-
- +-----+---------------------------------+
- | G | x <len1> <op1> <len2> <op2> ... |
- +-----+---------------------------------+
- Type Data
-
- where "x" is the generic command, a single letter. The letter S is not yet in
- use, so let's define S to mean SET. The S is followed by a single operand,
- which includes a single-character length field, similar to other generic
- command packets.
-
- The parameters which may be SET remotely are the ones having to do with file
- transfer and Kermit protocol in general, not system-dependent or
- communications-dependent parameters, since these must already have been set
- prior to making the initial connection, and must be set correctly in any event
- BEFORE you can successfully send a REMOTE SET (or any other) packet to the
- server.
-
- The most needed REMOTE SET command is REMOTE SET FILE TYPE {TEXT,BINARY}, but
- the others should be specified in the protocol too. Numeric codes are
- assigned to the parameters and values, so that the mechanism for conveying
- this information is system- and language-independent and reasonably compact.
- The REMOTE SET command does exactly what the corresponding SET command would
- do if it had been given to the remote server as an interactive command before
- it entered server mode.
-
- Command Code Values
-
- REMOTE SET ATTRIBUTES IN ALL 132 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES IN LENGTH 133 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES IN TYPE 134 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES IN DATE 135 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES IN CREATOR 136 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES IN ACCOUNT 137 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES IN AREA 138 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES IN BLOCK-SIZE 139 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES IN ACCESS 140 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES IN ENCODING 141 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES IN DISPOSITION 142 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES IN PROTECTION 143 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES IN GPROTECTION 144 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES IN SYSTEM-ID 145 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES IN FORMAT 146 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES IN SYS-INFO 147 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES IN BYTE-COUNT 148 0 = OFF, 1 = ON
-
- REMOTE SET ATTRIBUTES OUT ALL 232 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES OUT LENGTH 233 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES OUT TYPE 234 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES OUT DATE 235 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES OUT CREATOR 236 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES OUT ACCOUNT 237 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES OUT AREA 238 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES OUT BLOCK-SIZE 239 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES OUT ACCESS 240 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES OUT ENCODING 241 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES OUT DISPOSITION 242 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES OUT PROTECTION 243 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES OUT GPROTECTION 244 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES OUT SYSTEM-ID 245 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES OUT FORMAT 246 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES OUT SYS-INFO 247 0 = OFF, 1 = ON
- REMOTE SET ATTRIBUTES OUT BYTE-COUNT 248 0 = OFF, 1 = ON
-
- REMOTE SET FILE TYPE 300 0 = TEXT, 1 = BINARY
- REMOTE SET FILE NAMES 301 0 = CONVERTED, 1 = LITERAL
- REMOTE SET FILE COLLISION 302 0 = RENAME, 1 = REPLACE,
- 2 = BACKUP, 3 = APPEND,
- 4 = DISCARD, 4 = ASK
- REMOTE SET FILE REPLACE 303 0 = PRESERVE, 1 = DEFAULT
- REMOTE SET FILE INCOMPLETE 310 0 = DISCARD, 1 = KEEP
- REMOTE SET INCOMPLETE (same as above)
-
- REMOTE SET BLOCK-CHECK 400 number (1, 2, or 3)
- REMOTE SET RECEIVE PACKET-LENGTH 401 number (10-9024)
- REMOTE SET RECEIVE TIMEOUT 402 number (any, 0 = no timeout)
- REMOTE SET RETRY 403 number (any, 0 = no limit)
- REMOTE SET SERVER TIMEOUT 404 number (any, 0 = no timeout)
- REMOTE SET TRANSFER CHARACTER-SET 405 Character Set Designator
- REMOTE SET WINDOW-SLOTS 406 number (1-31)
-
- One Kermit program should not have knowledge of another Kermit program's local
- character sets, therefore REMOTE SET FILE CHARACTER-SET is not included. The
- Transfer Character Set Designator is the one described in the "ISO/Kermit"
- proposal. For example "I2/100" (ISO Latin Alphabet 1), "I2/144" (ISO
- Latin/Cyrillic), or "I14/13" (Japanese Roman/Katakana). The command would
- use the name (for example REMOTE SET TRANSFER CHARACTER-SET LATIN1) and the
- generic server command packet would use the corresponding designator.
-
- REMOTE SET LANGUAGE is omitted for the present, but can be added later. The
- problem here is assigning a unique code to each of the world's languages.
-
- The numbers shown for the codes and values are expressed as character
- strings composed of ASCII digits, 0-9. Here are examples, showing the TYPE
- and DATA fields of the Kermit packet:
-
- GS#101!0 = REMOTE SET ATTRIBUTE LENGTH OFF
- GS#202!0 = REMOTE SET ATTRIBUTE TYPE OFF
- GS#300!1 = REMOTE SET FILE TYPE BINARY
- GS#400!2 = REMOTE SET BLOCK CHECK 2
- GS#401$1000 = REMOTE SET RECEIVE PACKET-LENGTH 1000
- GS#405&I2/100 = REMOTE SET TRANSFER CHARACTER-SET LATIN-1
-
- ORGANIZATION AND EXPANSION:
-
- The codes are numeric strings, with the hundred's place assigned roughly
- according to "topic": 100's for Incoming Attributes, 200's for Outbound
- Attributes, 300's for file-related items, and 400's for packet-related items.
- Note that the SET ATTRIBUTE codes are equal to 100 or 200 plus the value of
- the corresponding attribute designator. There is plenty of room for expansion
- within each category, and new categories can be added as required.
-
- PROTOCOL:
-
- The person using the client Kermit program issues a REMOTE SET command for
- a single parameter, such as REMOTE SET FILE TYPE BINARY. The program forms
- the corresponding G packet and sends it to the server.
-
- The server program can respond in any of the following ways, and the client
- program should be prepared for each kind of response:
-
- E-packet: An Error packet. The server does not understand REMOTE SET
- packets, or it is not able to perform the specific SET that was
- requested. Therefore the client must not assume that the SET has
- been done, and if it is in local mode, it must give a message to
- the user, as described below.
-
- Y-packet: An Acknowledgement. The server accepted the command, and
- performed the requested SET. The data field of the Y-packet can
- be empty, to indicate that the requested value was accepted. Or
- it can contain the value which the server actually set. For
- example, the user types REMOTE SET RECEIVE PACKET-LENGTH 5000 but
- the server only supports lengths up to 1000:
-
- To server --> GS#400$5000
- Y1000 <-- To client
-
- CLIENT IMPLEMENTATION:
-
- A client can include support for any number of the REMOTE SET commands, or
- none at all. A minimal implementation might include only REMOTE SET FILE
- TYPE. This would include addition of the command to the program's command
- tables, code to send the generic packet, and code to interpret the response
- and issue any appropriate messages to the user, like the contents of the
- error packet data field, or any altered value that the server sent back in
- the data field of an acknowledgement. Examples:
-
- REMOTE SET command succeeded
- REMOTE SET value changed to 1000
- REMOTE SET command failed: <reason from data field of E-packet>
-
- SERVER IMPLEMENTATION:
-
- A server can also include support for any number of the REMOTE SET commands,
- or none at all. If it supports none at all, then it will automatically
- respond to a REMOTE SET packet with an error packet containing a message
- like "Unimplemented REMOTE command".
-
- If the server receives a REMOTE SET packet for a parameter it does not support
- the REMOTE SETting of, then it should respond with an error packet containing
- the message "Unknown REMOTE SET parameter".
-
- If the server gets a REMOTE SET packet for a parameter which is known to it,
- then it should:
-
- (a) Set the parameter to the requested value and respond with an empty Y
- packet, or:
-
- (b) If the requested value exceeds the server's maximum value for the
- parameter, set it to its own maximum value and respond with a Y packet
- containing the new value in its data field, as in the packet-length
- example above.
-
- If the server is a "permanent" Kermit server which cannot be terminated using
- BYE or FINISH, then when the user disengages from it using BYE, FINISH, or
- LOGOUT, then when the server receives a BYE, FINISH, or LOGOUT command, it
- should revert any parameters that were changed by REMOTE SET back to the
- values that were in use when server mode was entered.
-
- Thanks to Joe Doupnik and John Chandler for their assistance in the design
- of this protocol extension.
-
- ------------------------------
-
- End of Info-Kermit Digest
- *************************
-
-